#!/usr/bin/env python
# -*- coding: utf-8 -*-
#r
#       untitled.py
#
#       Copyright 2008 Mirat Can Bayrak <horselogy@pardus-nx8220>
#

from urlparse import urlparse
import re , urllib
class video_service:
    def __init__(self,url):
        self.regs = {
                        'www.xvideos.com':
                        {
                            'name_grabber' : '<strong>[A-z\s ]*</strong>',
                            'name_crop'    : (8,9),
                            'file_grabber' : 'http://[A-z\d./]*.flv',
                            'file_crop'    : (0,0)
                        },
                        'www.jizzhut.com':
                        {
                            'name_grabber' : '<Meta name="DESCRIPTION" content="[A-z\s,]*">',
                            'name_crop'    : (34,2),
                            'file_grabber' : 'http://[A-z\d./]*.flv',
                            'file_crop'    : (0,0)
                        },
                        'www.submityourflicks.com':
                        {
                            'name_grabber' : '<span class="title">[A-z\s,]*</span>',
                            'name_crop'    : (20,7),
                            'file_grabber' : 'http://[A-z\d./]*.flv',
                            'file_crop'    : (0,0)
                        },
                        'www.pikniktube.com':
                        {
                            'name_grabber' : '<h1>[A-z\s,]*</h1>',
                                'name_crop'    : (4,5),
                            'file_grabber' : 'http://[A-z\d./]*.flv',
                            'file_crop'    : (0,0)
                        },
                        'www.izlesene.com':
                        {
                            'name_grabber' : '<h1>[A-z\s,]*</h1>',
                            'name_crop'    : (4,5),
                            'file_grabber' : 'http://[A-z\d./]*.flv',
                            'file_crop'    : (0,0)
                        },
                    }
        if url: self.set_url(url)
        self.identified_domains = self.regs.keys()
    def set_url(self,url):
        self.url = url
        self.domain = urlparse(self.url)[1]
    def identify(self):
        """
            Er self.url bizim tanımlayabildiğimiz video servislerinden biri ise
            Domain ismini (örn: www.youtube.com) değilse false döndürür.
        """
        if self.domain in self.identified_domains:
                return True
        else:
                return False
    def __crop(self,what2get,what2crop):
        """
            crop eyler
        """
        start  =  self.regs[self.domain][what2get][0] or None
        end    = -self.regs[self.domain][what2get][1] or None
        return what2crop[start:end]
    def fetch(self):
        """
            self.url deki adres ve video ismi bilgilerini alıyor.
            (title , video) şeklinde bir tuple döndürüyor.
            eğer bir sorun çıkarsa false döndürüyor
        """
        self.html_data = urllib.urlopen(self.url).read(),
        print self.html_data
        fetched = True
        try :
            title    = self.__crop('name_crop',re.compile(self.regs[self.domain]['name_grabber']).search(self.html_data).group())
        except:
            fetched = False
            print "can't fetch name"
        try:
            file_url = self.__crop('file_crop',re.compile(self.regs[self.domain]['file_grabber']).search(self.html_data).group())
        except:
            fetched = False
            print "can't fetch url"
        if fetched:
            return title , file_url
        else:
            return False
